/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Anti-DDoS Basic APIs
DDoS 基础防护防护 IP、攻击记录相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef BaseantiClient_h
#define BaseantiClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKBaseanti/BaseantiApiModel.h>

@interface BaseantiClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    describeIpSafetyInfo sync request
    @param describeIpSafetyInfoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpSafetyInfoResponse` the request response data model
    */
    -(NSDictionary*) describeIpSafetyInfoSyncWithRequest:(BaseantiDescribeIpSafetyInfoRequest*) describeIpSafetyInfoRequest;

    -(void)describeIpSafetyInfoAsyncWithRequest:(BaseantiDescribeIpSafetyInfoRequest*) describeIpSafetyInfoRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeIpSafetyInfoResponse* _Nullable describeIpSafetyInfoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setIpCleanThreshold sync request
    @param setIpCleanThresholdRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setIpCleanThresholdResponse` the request response data model
    */
    -(NSDictionary*) setIpCleanThresholdSyncWithRequest:(BaseantiSetIpCleanThresholdRequest*) setIpCleanThresholdRequest;

    -(void)setIpCleanThresholdAsyncWithRequest:(BaseantiSetIpCleanThresholdRequest*) setIpCleanThresholdRequest
    completionHandler:(void(^)(int statusCode,BaseantiSetIpCleanThresholdResponse* _Nullable setIpCleanThresholdResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeIpMonitorFlow sync request
    @param describeIpMonitorFlowRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpMonitorFlowResponse` the request response data model
    */
    -(NSDictionary*) describeIpMonitorFlowSyncWithRequest:(BaseantiDescribeIpMonitorFlowRequest*) describeIpMonitorFlowRequest;

    -(void)describeIpMonitorFlowAsyncWithRequest:(BaseantiDescribeIpMonitorFlowRequest*) describeIpMonitorFlowRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeIpMonitorFlowResponse* _Nullable describeIpMonitorFlowResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeIpResources sync request
    @param describeIpResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeIpResourcesSyncWithRequest:(BaseantiDescribeIpResourcesRequest*) describeIpResourcesRequest;

    -(void)describeIpResourcesAsyncWithRequest:(BaseantiDescribeIpResourcesRequest*) describeIpResourcesRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeIpResourcesResponse* _Nullable describeIpResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAttackStatistics sync request
    @param describeAttackStatisticsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttackStatisticsResponse` the request response data model
    */
    -(NSDictionary*) describeAttackStatisticsSyncWithRequest:(BaseantiDescribeAttackStatisticsRequest*) describeAttackStatisticsRequest;

    -(void)describeAttackStatisticsAsyncWithRequest:(BaseantiDescribeAttackStatisticsRequest*) describeAttackStatisticsRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeAttackStatisticsResponse* _Nullable describeAttackStatisticsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeElasticIpResources sync request
    @param describeElasticIpResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeElasticIpResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeElasticIpResourcesSyncWithRequest:(BaseantiDescribeElasticIpResourcesRequest*) describeElasticIpResourcesRequest;

    -(void)describeElasticIpResourcesAsyncWithRequest:(BaseantiDescribeElasticIpResourcesRequest*) describeElasticIpResourcesRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeElasticIpResourcesResponse* _Nullable describeElasticIpResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeCcsIpResources sync request
    @param describeCcsIpResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeCcsIpResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeCcsIpResourcesSyncWithRequest:(BaseantiDescribeCcsIpResourcesRequest*) describeCcsIpResourcesRequest;

    -(void)describeCcsIpResourcesAsyncWithRequest:(BaseantiDescribeCcsIpResourcesRequest*) describeCcsIpResourcesRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeCcsIpResourcesResponse* _Nullable describeCcsIpResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeIpCleanThresholdRange sync request
    @param describeIpCleanThresholdRangeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpCleanThresholdRangeResponse` the request response data model
    */
    -(NSDictionary*) describeIpCleanThresholdRangeSyncWithRequest:(BaseantiDescribeIpCleanThresholdRangeRequest*) describeIpCleanThresholdRangeRequest;

    -(void)describeIpCleanThresholdRangeAsyncWithRequest:(BaseantiDescribeIpCleanThresholdRangeRequest*) describeIpCleanThresholdRangeRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeIpCleanThresholdRangeResponse* _Nullable describeIpCleanThresholdRangeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAttackTypeCount sync request
    @param describeAttackTypeCountRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttackTypeCountResponse` the request response data model
    */
    -(NSDictionary*) describeAttackTypeCountSyncWithRequest:(BaseantiDescribeAttackTypeCountRequest*) describeAttackTypeCountRequest;

    -(void)describeAttackTypeCountAsyncWithRequest:(BaseantiDescribeAttackTypeCountRequest*) describeAttackTypeCountRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeAttackTypeCountResponse* _Nullable describeAttackTypeCountResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeIpResourceProtectInfo sync request
    @param describeIpResourceProtectInfoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpResourceProtectInfoResponse` the request response data model
    */
    -(NSDictionary*) describeIpResourceProtectInfoSyncWithRequest:(BaseantiDescribeIpResourceProtectInfoRequest*) describeIpResourceProtectInfoRequest;

    -(void)describeIpResourceProtectInfoAsyncWithRequest:(BaseantiDescribeIpResourceProtectInfoRequest*) describeIpResourceProtectInfoRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeIpResourceProtectInfoResponse* _Nullable describeIpResourceProtectInfoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeCpsIpResources sync request
    @param describeCpsIpResourcesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeCpsIpResourcesResponse` the request response data model
    */
    -(NSDictionary*) describeCpsIpResourcesSyncWithRequest:(BaseantiDescribeCpsIpResourcesRequest*) describeCpsIpResourcesRequest;

    -(void)describeCpsIpResourcesAsyncWithRequest:(BaseantiDescribeCpsIpResourcesRequest*) describeCpsIpResourcesRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeCpsIpResourcesResponse* _Nullable describeCpsIpResourcesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    setCleanThreshold sync request
    @param setCleanThresholdRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `setCleanThresholdResponse` the request response data model
    */
    -(NSDictionary*) setCleanThresholdSyncWithRequest:(BaseantiSetCleanThresholdRequest*) setCleanThresholdRequest;

    -(void)setCleanThresholdAsyncWithRequest:(BaseantiSetCleanThresholdRequest*) setCleanThresholdRequest
    completionHandler:(void(^)(int statusCode,BaseantiSetCleanThresholdResponse* _Nullable setCleanThresholdResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeIpResourceFlow sync request
    @param describeIpResourceFlowRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpResourceFlowResponse` the request response data model
    */
    -(NSDictionary*) describeIpResourceFlowSyncWithRequest:(BaseantiDescribeIpResourceFlowRequest*) describeIpResourceFlowRequest;

    -(void)describeIpResourceFlowAsyncWithRequest:(BaseantiDescribeIpResourceFlowRequest*) describeIpResourceFlowRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeIpResourceFlowResponse* _Nullable describeIpResourceFlowResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeIpResourceInfo sync request
    @param describeIpResourceInfoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeIpResourceInfoResponse` the request response data model
    */
    -(NSDictionary*) describeIpResourceInfoSyncWithRequest:(BaseantiDescribeIpResourceInfoRequest*) describeIpResourceInfoRequest;

    -(void)describeIpResourceInfoAsyncWithRequest:(BaseantiDescribeIpResourceInfoRequest*) describeIpResourceInfoRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeIpResourceInfoResponse* _Nullable describeIpResourceInfoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAttackLogs sync request
    @param describeAttackLogsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAttackLogsResponse` the request response data model
    */
    -(NSDictionary*) describeAttackLogsSyncWithRequest:(BaseantiDescribeAttackLogsRequest*) describeAttackLogsRequest;

    -(void)describeAttackLogsAsyncWithRequest:(BaseantiDescribeAttackLogsRequest*) describeAttackLogsRequest
    completionHandler:(void(^)(int statusCode,BaseantiDescribeAttackLogsResponse* _Nullable describeAttackLogsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    baseanti common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) baseantiCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)baseantiCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* BaseantiClient_h */
